Menu Setting

배경색 바꾸기 앱(메뉴)
컨텍스트 메뉴
앱 위의 별도의 설정창을 제공

app/res/menu/ ‘menu’ 디렉터리를 별도로 생성하고,
menu 디렉토리내에 메뉴 xml 파일(*.xml)을 생성
이후 Java를 이용해서 설정
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/baseLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text=" ." />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON" />
</LinearLayout>
app/res/menu(새로 생성 dir)/menu1.xml(임의 생성)
item 은 메뉴를
item 내부 <menu>는 서브 메뉴를 생성
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemRed"
android:title="RED BACKGROUND!" />
<item
android:id="@+id/itemGreen"
android:title="GREEN BACKGROUND" />
<item
android:id="@+id/itemBlue"
android:title="BLUE BACKGROUND!" />
<itme android:title=" >>" >
<menu>
<item
android:id="@+id/subRotate"
android:title=" 45 " />
<item
android:id="@+id/subSize"
android:title=" 2 " />
</menu>
</itme>
</menu>
MainActivity.java
menu number는 (i, j, k) 에서
i는 처음 메뉴의 가로를 의미(0부터 인덱싱)
j는 해당 가로 메뉴의 세로를 의미(1부터 인덱싱)
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
LinearLayout baseLayout;
Button button1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,1,0, "BACKGROUND RED");
menu.add(0, 2, 0, "BACKGROUND GREEN");
menu.add(0, 3, 0, "BACKGROUND BLUE");
SubMenu sMenu=menu.addSubMenu("CHANGE BUTTON >>");
sMenu.add(0, 4, 0, "BUTTON 45 ROTATION");
sMenu.add(0, 5, 0, "BUTTON MAGNIFY X2");
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()){
case 1:
baseLayout.setBackgroundColor(Color.RED);
return true;
case 2:
baseLayout.setBackgroundColor(Color.GREEN);
return true;
case 3:
baseLayout.setBackgroundColor(Color.BLUE);
return true;
case 4:
button1.setRotation(45);
return true;
case 5:
button1.setScaleX(2);
button1.setScaleY(2);
return true;
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("CHANGE BACKGROUND!!!");
baseLayout = (LinearLayout) findViewById(R.id.baseLayout);
button1 = (Button) findViewById(R.id.button1);
}
}